/*
    Asignatura: Procesadores de lenguajes.
    Practica de labotario numero 10.
    Autores:
                Guillermo Garcia Juanes (Alu3889)
                Jose Antonio Hernandez Gonzalez (Alu3809)

    Fichero: Anasin.g
    Contenido: Analizador Sintactico definido en la practica.
*/
parser grammar Anasin;

options{
    tokenVocab = Analex;
    output = AST;
    k=3;
}

tokens {
    LISTA_INST;
}

@header{ package pl.equipo13.p10; 
    import pl.equipo13.p10.tree.*;}

instrucciones: (asg SEPARADOR)* EOF -> ^(LISTA_INST asg*); //a=3+4*5-2; (Da error por el menos, es logico, pero deberia)
asg: (IDENT IGUAL^)? exp;
exp: exp_sr (OPERADORCOMPARAR^ exp_sr)?;
exp_sr: exp_mult? (OPERADORSUMRES^ exp_mult)*;
exp_mult: exp_base (OPERADORMULDIV^ exp_base)*;
exp_base: IDENT | NUMERO | APARENTESIS! exp CPARENTESIS!;